package com.marvels.financial.pay.hjpay.dto;

import com.marvels.common.utils.DateUtils;
import com.marvels.common.utils.StringUtils;

import java.io.Serializable;
import java.util.Date;

/**
 * 单笔支付DTO
 * @author 唐佩文
 *
 */
public class SinglePaymentDTO implements Serializable{
	
	private static final long serialVersionUID = 1L;

	/**
	 * 普通代付 BANK_PAY_ORDINARY_ORDER
	 * 朝夕付 BANK_PAY_DAILY_ORDER
	 * 任意付  BANK_PAY_MAT_ENDOWMENT_ORDER
	 * 组合付  BANK_PAY_COMPOSE_ORDER
	 */
	public String productCode="BANK_PAY_COMPOSE_ORDER";//产品类型   必填
	
	public String requestTime=DateUtils.getDateYYYYMMDDHHMMSS(new Date()) ;//交易请求时间  格式：yyyy-MM-dd HH:mm:ss  必填
	
	public String merchantOrderNo;//商户订单号度须控制在 12 到 25 之间 必填
	
	public String receiverAccountNoEnc;//收款人银行卡卡号 必填
	
	public String receiverNameEnc ;//收款人银行卡持卡人名称 必填
	
	public Integer receiverAccountType=201;//账户类型   对私账户：201 对公账户：204  必填
	
	public String receiverBankChannelNo ;// 收款账户联行号  对公账户必须填写此字段 String  非必填
	
	public String paidAmount;//交易金额 单位：元，精确到分，保留两位小数  必填
	
	public String currency="201";//必填  人民币币种填写：201 必填
	
	public String isChecked="202";//  复核：201，不复核：202   必填
	
	public String paidDesc ;//代付说明  必填
	
	/**
	 * 工资资金  201
	 * 活动经费  202
	 * 养老金  203
	 * 货款 204  
	 * 劳务费 205
	 * 保险理财 206
	 */
	public String paidUse="204";//代付用途 必填

	private String callbackUrl ;// 代付完成后异步回调通知地址 非必填写
	
	private String firstProductCode="BANK_PAY_MAT_ENDOWMENT_ORDER";//优先使用产品  组合付必填，非组合付不用填写
	public String getProductCode() {
		return productCode;
	}

	public void setProductCode(String productCode) {
		this.productCode = productCode;
	}

	public String getRequestTime() {
		return requestTime;
	}

	public void setRequestTime(String requestTime) {
		this.requestTime = StringUtils.isEmpty(requestTime)?DateUtils.getDateYYYYMMDDHHMMSS(new Date()):requestTime;
	}

	public String getMerchantOrderNo() {
		return merchantOrderNo;
	}

	public void setMerchantOrderNo(String merchantOrderNo) {
		this.merchantOrderNo = merchantOrderNo;
	}

	public String getReceiverAccountNoEnc() {
		return receiverAccountNoEnc;
	}

	public void setReceiverAccountNoEnc(String receiverAccountNoEnc) {
		this.receiverAccountNoEnc = receiverAccountNoEnc;
	}

	public String getReceiverNameEnc() {
		return receiverNameEnc;
	}

	public void setReceiverNameEnc(String receiverNameEnc) {
		this.receiverNameEnc = receiverNameEnc;
	}

	public Integer getReceiverAccountType() {
		return receiverAccountType;
	}

	public void setReceiverAccountType(Integer receiverAccountType) {
		this.receiverAccountType = receiverAccountType==null?201:receiverAccountType;
	}

	public String getReceiverBankChannelNo() {
		return receiverBankChannelNo;
	}

	public void setReceiverBankChannelNo(String receiverBankChannelNo) {
		this.receiverBankChannelNo = receiverBankChannelNo;
	}

	
	public String getPaidAmount() {
		return paidAmount;
	}

	public void setPaidAmount(String paidAmount) {
		this.paidAmount = paidAmount;
	}

	public String getIsChecked() {
		return isChecked;
	}

	public void setIsChecked(String isChecked) {
		this.isChecked = isChecked;
	}

	public String getPaidDesc() {
		return paidDesc;
	}

	public void setPaidDesc(String paidDesc) {
		this.paidDesc = paidDesc;
	}

	public String getPaidUse() {
		return paidUse;
	}

	public void setPaidUse(String paidUse) {
		this.paidUse = paidUse;
	}

	public String getFirstProductCode() {
		return firstProductCode;
	}

	public void setFirstProductCode(String firstProductCode) {
		this.firstProductCode = firstProductCode;
	}

	public String getCallbackUrl() {
		return callbackUrl;
	}

	public void setCallbackUrl(String callbackUrl) {
		this.callbackUrl = callbackUrl;
	}

	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}
	
}
